import App from './App'

// #ifndef VUE3
import Vue from 'vue'
import './uni.promisify.adaptor'
Vue.config.productionTip = false

// 添加全局API请求工具
Vue.prototype.$api = {
	// API基础URL
	baseUrl: 'http://127.0.0.1:8000/api',
	
	// 通用请求方法
	request(options = {}) {
		options.url = this.baseUrl + options.url;
		
		// 携带token
		const token = uni.getStorageSync('token');
		if (token) {
			options.header = {
				...options.header,
				'Authorization': `Bearer ${token}`
			};
		}
		
		// 返回Promise
		return new Promise((resolve, reject) => {
			uni.request({
				...options,
				success: (res) => {
					console.log(`API响应 [${options.url}]:`, res);
					
					if (res.statusCode === 200 || res.statusCode === 201) {
						resolve(res.data);
					} else if (res.statusCode === 401) {
						// 未授权，清除token并跳转到登录页
						console.error('授权失败:', res);
						uni.removeStorageSync('token');
						uni.removeStorageSync('userInfo');
						uni.showToast({
							title: '请重新登录',
							icon: 'none',
							duration: 2000
						});
						setTimeout(() => {
							uni.navigateTo({
								url: '/pages/login/login'
							});
						}, 1500);
						reject(res);
					} else {
						console.error('请求失败:', res);
						uni.showToast({
							title: res.data.detail || '请求失败',
							icon: 'none'
						});
						reject(res);
					}
				},
				fail: (err) => {
					console.error('网络错误:', err);
					uni.showToast({
						title: '网络错误，请检查网络连接',
						icon: 'none',
						duration: 2000
					});
					reject(err);
				}
			});
		});
	},
	
	// 登录
	login(data) {
		// 微信小程序不支持URLSearchParams，直接传递表单数据对象
		return this.request({
			url: '/users/login',
			method: 'POST',
			header: {
				'content-type': 'application/x-www-form-urlencoded'
			},
			data: {
				username: data.username,
				password: data.password
			}
		});
	},
	
	// 注册
	register(data) {
		return this.request({
			url: '/users/register',
			method: 'POST',
			data
		});
	},
	
	// 获取用户信息
	getUserInfo() {
		return this.request({
			url: '/users/me',
			method: 'GET'
		});
	},
	
	// 更新用户信息
	updateUserInfo(data) {
		return this.request({
			url: '/users/me',
			method: 'PUT',
			data
		});
	},
	
	// 获取心愿列表
	getWishList() {
		return this.request({
			url: '/wishes',
			method: 'GET'
		});
	},
	
	// 创建心愿
	createWish(data) {
		return this.request({
			url: '/wishes',
			method: 'POST',
			data
		});
	},
	
	// 获取我的心愿列表
	getMyWishes() {
		return this.request({
			url: '/wishes/my',
			method: 'GET'
		});
	},
	
	// 获取心愿详情
	getWishDetail(id) {
		return this.request({
			url: `/wishes/${id}`,
			method: 'GET'
		});
	},
	
	// 更新心愿
	updateWish(id, data) {
		return this.request({
			url: `/wishes/${id}`,
			method: 'PUT',
			data
		});
	},
	
	// 删除心愿
	deleteWish(id) {
		return this.request({
			url: `/wishes/${id}`,
			method: 'DELETE'
		});
	}
};

App.mpType = 'app'
const app = new Vue({
  ...App
})
app.$mount()
// #endif

// #ifdef VUE3
import { createSSRApp } from 'vue'
export function createApp() {
  const app = createSSRApp(App)
  return {
    app
  }
}
// #endif